package com.ruoyi.business.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.business.domain.ImportData;
import com.ruoyi.business.vo.ExperimentTimeRangeVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 导入数据Mapper接口
 * 
 * @author qiancheng
 * @date 2025-09-15
 */
@Mapper
public interface ImportDataMapper extends BaseMapper<ImportData>
{
    /**
     * 查询导入数据
     * 
     * @param id 导入数据主键
     * @return 导入数据
     */
    public ImportData selectImportDataById(Long id);

    /**
     * 查询导入数据列表
     * 
     * @param importData 导入数据
     * @return 导入数据集合
     */
    public List<ImportData> selectImportDataList(ImportData importData);

    /**
     * 新增导入数据
     * 
     * @param importData 导入数据
     * @return 结果
     */
    public int insertImportData(ImportData importData);

    /**
     * 修改导入数据
     * 
     * @param importData 导入数据
     * @return 结果
     */
    public int updateImportData(ImportData importData);

    /**
     * 删除导入数据
     * 
     * @param id 导入数据主键
     * @return 结果
     */
    public int deleteImportDataById(Long id);

    /**
     * 批量删除导入数据
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteImportDataByIds(Long[] ids);

    /**
     * 获取数据
     * @param type
     * @param field1
     * @param field2
     * @return
     */
//    ImportData selectByUniqueKey(@Param("type") Integer type,
//                                 @Param("field1") String field1,
////                                 @Param("field2") String field2,
//                                 @Param("importTime") Date importTime);


    /**
     * 根据类型获取不重复的导入时间列表
     */
    List<Date> selectImportTimesByType(@Param("type") Integer type);

    /**
     * 根据导入时间和类型查询实验时间范围
     * @param importTime 导入时间
     * @param type 数据类型
     * @return 时间范围 VO
     */
    List<ExperimentTimeRangeVO> selectTimeRangeByImportTime(@Param("importTime") Date importTime,
                                                      @Param("type") Integer type);


    /**
     * 获取数据
     * @param type
     * @param field1
     * @param importDay
     * @param startTime
     * @param endTime
     * @return
     */
    ImportData selectByUniqueKey(@Param("type") Integer type,
                                 @Param("field1") String field1,
                                 @Param("importDay") Date importDay,
                                 @Param("startTime") String startTime,
                                 @Param("endTime") String endTime);

    /**
     * 按多个 type 查询导入数据列表
     */
    List<ImportData> selectImportDataListByTypes(@Param("typeList") List<String> typeList,
                                                 @Param("field1") String field1,
                                                 @Param("field2") String field2,
                                                 @Param("importDay") Date importDay,
                                                 @Param("startTime") String startTime,
                                                 @Param("endTime") String endTime);

}
